There are many requirements to display numbers, symbols or letters (characters) on a display or to print characters. To simplify the following description, the verb display will be understood to include the verb print and the noun display will be understood to include the noun printer. The display displays characters in response to a data set that defines the shape and size of each of the characters displayed. In their crudest form, the data sets are bitmaps composed of a data element for each picture element (pixel) in the area of the display occupied by the character. The data element defines whether the pixel is ON or OFF. Although bitmaps are normally ultimately generated when a character is displayed using a conventional monitor or printer, bitmaps are very inefficient in terms of memory requirements or transmission bandwidth requirements if characters are to be stored or transmitted. Not only is an individual bitmap required for each character in the character set, sets of bitmaps are required for each different font. The word font as used in this disclosure means a character set unified by typeface and size. What is required in modern displays is to be able to display characters in many different fonts without increasing the amount of storage capacity or hardware required, and without increasing the processing time needed to display, transmit, and store the characters.
Methods that represent characters using bitmaps require a large number of data to represent a number of typefaces because of the extreme difficulty in enlarging, reducing, and transforming bitmaps. Others have therefore represented characters in different ways with the goal of reducing the number of data required.
Two processes are involved in representing a character set using fewer data than are required to represent the corresponding bitmaps. A compact data set that represents the character set must be created. The compact data set can then be stored in the device in which it is created or can be transmitted or transferred to another device. To display one or more characters of the character set represented by the compact data set, bitmaps representing the characters are normally generated in response to the compact data set so that the characters can be displayed using a normal pixel-based monitor or printer.
Japanese Examined Patent Publication No. H2-23871 discloses a method for representing and displaying kanji characters. In this method, kanji characters are each divided into left and right radicals or may be divided into top and bottom radicals, depending on the character. The radicals are stored, and selected ones of them are then combined to synthesize kanji characters. However, since the shapes and sizes of the radicals are fixed, this method requires a large number of data to handle many fonts, i.e., many different typefaces in many different sizes. This method requires that a large number of data be stored even when the data stored are static outline data obtained by tracing the fixed radicals.
Moreover, since static outline data include static skeleton point data, all of the radicals change proportionally when the character is scaled, i.e., enlarged or reduced. As a result, scaling the character destroys the harmony between the radicals, particularly the design balance of the line widths. Scaling not only expands each character to cover a wider area when the point size is increased or compresses the character into a narrower area as the point size is decreased, but also introduces an offset between the visual center of the character and the geometrical center. This causes the position of the character in a character string to vary, and reduces the quality of the alignment of characters when groups of characters are arranged in rows and columns such as in a conventional printed document.
Finally, generating static outline data by tracing the radicals still requires a relatively large number of data to represent the character set.
To handle the problem of the distortion of character shape and alignment that occurs when characters are scaled, the character set, the line width of a radical corresponding to the points, the aspect ratio of the line width, and the design are changed and the static outline data are prepared again. However, this further increases the number of data required to represent the character set.
Another method of representing character sets is the outline font, such as the Bitstream™ and Postscript™ fonts. Static outline data are generated from each character by tracing the outline of the character using spline curves or Bezier curves. An example of this is shown in FIG. 1. The character shown in the drawing is specified by data representing the 20 data points 101, each of which is shown in the drawing by a circle (o), and a character generating function that operates in response to these data points. The character generating function generates the character shape 100 by successive approximation. Many data are required to specify the character and, because of the complexity of the calculations required, the rendering speed is slow.
Thus, although outline fonts can be used to generate compact data sets representing character and to display characters in response to such compact data sets, they suffer from the problems described above. The severity of some of the problems can be reduced by using hinting data, which are different for every character. Moreover, outline font data are difficult to modify, so new characters, i.e., characters outside the character set for which outline font data exist, are difficult to create by modifying existing outline font data. New typefaces are also difficult to create by modifying existing outline font data. This means that it is difficult to generate new characters quickly. Consequently, outline fonts are only practical in applications that represent text using fixed character sets so that the need to generate new characters arises only infrequently. This sets a practical limit on the product of the number of characters in the character set and the number of fonts to about 6,000 to 7,000.
What is needed is a method and apparatus to create compact data sets representing character sets and to display characters in different fonts in response to such compact data sets with no degradation in character quality even when the character set and the number of fonts are both large.
What is also needed is a character generation method in which scaling the character does not degrade character quality.
What is also needed is a character display method that can display new characters easily, and that generates compact data sets that represent characters at high speed and in a compact form ideal for character transmission.
Finally, what is needed is method of representing characters that allows the shape of the character to be easily changed.